/**
 * AI API接口封装
 * 用于调用AiController的接口
 */

import { getCurrentConfig } from './config.js'

// 获取当前配置
const config = getCurrentConfig()

/**
 * 通用请求方法
 * @param {string} url 请求地址
 * @param {object} options 请求选项
 * @param {boolean} isAIRequest 是否为AI接口请求（使用8083端口）
 * @returns {Promise} 请求结果
 */
function request(url, options = {}, isAIRequest = false) {
  return new Promise((resolve, reject) => {
    // AI接口使用8083端口，其他接口使用8080端口
    let baseURL
    if (isAIRequest) {
      baseURL = config.authBaseURL // 8083端口
    } else {
      baseURL = config.baseURL.replace('/api', '') // 8080端口，移除/api后缀
    }
    
    uni.request({
      url: `${baseURL}${url}`,
      method: options.method || 'GET',
      data: options.data || {},
      header: {
        'Content-Type': 'application/json',
        ...options.header
      },
      success: (res) => {
        if (res.statusCode === 200) {
          resolve(res.data)
        } else {
          reject(new Error(`请求失败: ${res.statusCode}`))
        }
      },
      fail: (err) => {
        reject(new Error(`网络请求失败: ${err.errMsg}`))
        console.error('AI API请求失败:', err)
      }
    })
  })
}

/**
 * AI对话接口
 * 调用AiController的/chat接口
 * @param {object} data 对话数据
 * @param {string} data.message 用户消息
 * @param {string} data.context 对话上下文（可选）
 * @param {string} data.imageUrl 图片URL（可选，用于图片识别）
 * @returns {Promise} AI回复结果
 */
export function chatWithAI(data) {
  // 构建请求数据
  const requestData = {
    message: data.message
  }
  
  // 如果有图片，可以在这里处理图片上传逻辑
  if (data.imageUrl) {
    // 这里可以添加图片上传到服务器的逻辑
    // 然后将图片URL添加到请求中
    requestData.imageUrl = data.imageUrl
  }
  
  return request('/XinAi/chat', {
    method: 'POST',
    data: requestData
  }, true) // 标记为AI接口请求，使用8083端口
}

/**
 * 获取AI配置状态
 * 调用AiController的/config/status接口
 * @returns {Promise} 配置状态
 */
export function getAIConfigStatus() {
  return request('/XinAi/config/status', {}, true) // 标记为AI接口请求
}

/**
 * 测试AI连接
 * 调用AiController的/test接口
 * @returns {Promise} 测试结果
 */
export function testAIConnection() {
  return request('/XinAi/test', {}, true) // 标记为AI接口请求
}

/**
 * AI健康检查
 * 调用AiController的/health接口
 * @returns {Promise} 健康状态
 */
export function checkAIHealth() {
  return request('/XinAi/health', {}, true) // 标记为AI接口请求
} 